package net.biancheng.mapper;

import net.biancheng.bean.SysDept;

import java.util.List;

/**
 * 部门Mapper接口
 *
 * @author lb
 * @date 2024-01-25
 */
public interface SysDeptMapper
{
    /**
     * 查询部门
     *
     * @param id 部门主键
     * @return 部门
     */
    public SysDept selectSysDeptById(Long id);

    /**
     * 判断当前父节点下是否有子节点
     *
     * @param parentId 父节点ID
     * @return 子节点数量
     */
    public int hasChildByParentId(Long parentId);

    /**
     * 查询子部门列表
     *
     * @param parentId 父级部门ID
     * @return 子部门列表
     */
    public List<SysDept> selectChildrenDeptByParentId(Long parentId);

    /**
     * 查询部门列表
     *
     * @param sysDept 部门
     * @return 部门集合
     */
    public List<SysDept> selectSysDeptList(SysDept sysDept);

    /**
     * 新增部门
     *
     * @param sysDept 部门
     * @return 结果
     */
    public int insertSysDept(SysDept sysDept);

    /**
     * 修改部门
     *
     * @param sysDept 部门
     * @return 结果
     */
    public int updateSysDept(SysDept sysDept);

    /**
     * 批量修改部门下的子部门祖级信息
     *
     * @param list 子部门列表
     * @return 结果
     */
    public int updateSysDeptChildren(List<SysDept> list);

    /**
     * 修改所在部门正常状态
     *
     * @param deptIds 部门ID组
     */
    public void updateDeptStatusNormal(Long[] deptIds);

    /**
     * 删除部门
     *
     * @param id 部门主键
     * @return 结果
     */
    public int deleteSysDeptById(Long id);

    /**
     * 批量删除部门
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSysDeptByIds(Long[] ids);
}
